1. Technical Field
The invention relates to image processing. More particularly, the invention relates to a method and system for converting image data, for example, between a bitplane (planar) format and a CMYK (chunky) format.
2. Description of the Prior Art
Computer images are arranged as a grid of pixels in which each pixel is stored in memory as a numerical representation of the pixel""s attributes, such as color and intensity. Several different color models are currently being used to define such colors mathematically.
The RGB model, representing the three primary colors red, green, and blue, is an additive model. RGB is used in most computer monitors, scanners, televisions, graphics cards, and lighting effects. The CMYK model is a subtractive system, based on the absorption of ink and paint into paper. Most printers use the CMYK model.
Because most computers and scanners use RGB, and most printers use CMYK, a conversion process, also referred to as rendering, must be used to print an image in CMYK that is displayed on a computer screen in RGB. This conversion may be performed in the user""s computer, in the scanner, or in the printer. An example of a software application for RGB to CMYK conversion in a computer is Photoshop, by Adobe Systems. After the image is converted, it is then saved as a CMYK version and may be output to the printer as desired. Rendered images may be stored in different formats in a computer""s memory. Two such formats are bitplane (planar) and CMYK (chunky) formats.
FIG. 1 is an illustration of a portion of an image 10 that is arranged in a chunky data format. In chunky data format, the data for each pixel are stored as xe2x80x9cchunks.xe2x80x9d Each word 12, 14, 16, 18 corresponds to one pixel in the image and includes one byte for each of four color planes. For example, the first word 12 includes a cyan byte C0, a magenta byte M0, a yellow byte Y0, and a black byte K0. In the FIG. 1, the bytes are incremented from left to right in a word, and from top to bottom to provide a group of words.
Chunky format is very efficient when rendering an image because a processor only needs to perform a single word write operation to store the pixel in memory once it has generated the pixel.
Image files generally contain large quantities of data. Overall system performance can be significantly affected when transferring such large image files. It is therefore of critical importance to conserve bandwidth in the image transfer process. Chunky data are readily transmitted quickly and efficiently over a system bus, for example, a PCI bus. Thus, once the image has been rendered in a frame buffer, it can be rapidly transmitted to a printer because the data can be sent as discrete chunks and reassembled at the printer to produce the image. However, chunky data are not processed as efficiently by the printer as are planar data.
A typical color laser printer has one drum upon which an image is formed during an electrostatic dye transfer process. Such printer prints CMYK color planes in four passes and therefore can only accept one color separation at a time. Because each pixel typically includes data for all four color planes when in chunky format, the printer must access the storage memory multiple times to print the image. For example, when a pixel is transmitted to the printer, the printer must discard all data in the word that comprises the pixel except for data relating to the specific color plane that is currently being printed. Thus, up to three-quarters of all data is discarded for each pixel that is printed, and each word must be transferred to the printer four separate times to print a full-color image.
For example, an A4 page having a resolution of 400 dots per inch (dpi) can be stored in approximately 60 megabytes (MB) of memory. However, if the data are stored in chunky format, the printer must access memory four times per pixel, i.e. one for each of the CMYK color planes. The printer first accesses the data to print one color plane, and discards all of the data for each such access that are not concerned with the color plane currently being printed. Thus, 240 MB (60 MBxc3x974) of memory is being transferred to print the same A4 page when the data are arranged in a chunky format. This larger memory transfer can slow system performance and printing.
FIG. 2 is an illustration of a portion of an image 10 that is arranged in a planar data format. In the planar format, the image is represented by several overlaying color planes 20, 22, 24, 26 of data. Thus, in a CMYK image, each pixel is separated by color. For example, all cyan information C0, C1, C2-Cn is combined into a cyan pixel plane. Magenta information M0-Mn, yellow information Y0-Yn, and black information B0-Bn is combined into separate pixel planes.
In the planar format, pixel data for each color are stored in a separate section of the memory, or in a separate buffer. A four-pass printer separately prints the contents of each buffer to reproduce the color image. The planar format is therefore very efficient when used in printing. In contrast to the previous example concerning chunky format, the four memory buffers are accessed one time each in planar format, without discarding color data. Thus, only 60 MB of memory is required to transfer and print the same A4 image in a planar format.
However, planar format is not used to advantage in the rendering process, because the processor must perform four write operations for each pixel rendered to store the pixel in memory. This is due to the fact that the processor must access all four memory buffers to obtain the data necessary to complete all four color planes, e.g. in a CMYK image. The time required to render an image where the data are arranged in a planar format can be approximately 30 percent greater than the time required to render the image where the data are arranged in a chunky format. Therefore, a planar format is not as efficient for rendering an image as a chunky format.
It is known in the prior art to use software to convert between a chunky format and a planar format. However, such software conversion techniques are both memory and time consuming. For example, data stored in planar format at a printer are not transferred as efficiently as data stored in chunky format data.
There has therefore been a need for an improved method for converting between chunky and planar formats. It would therefore be an advantage to provide a method and system for converting between a planar format and a chunky data format. It would be yet another advantage if the method and system were able to convert between these formats bidirectionally.
The invention provides a method and system for converting image data between a chunky format and a planar format. In the preferred embodiment of the invention, an image is initially rendered from RGB data to CMYK data and stored in memory in a chunky format. A barrel shifter is used to sort each byte of the image by color plane. The barrel shifter separates the bytes by color plane and outputs the sorted bytes in a planar format. In the preferred embodiment of the invention, the barrel shifter may be constructed as part of an application specific integrated circuit (ASIC) that interfaces a processor to the system memory.
The invention preferably includes a plurality of memory cells that store the color sorted bytes. The memory cells are partially interconnected, although two addresses of each memory cell are not connected in common with any of the other memory cells. The non-interconnected addresses function as a set of selection lines, whose binary values determine the number of positions that the data stored in the memory are to be shifted.
The invention includes a circuit that obtains an address for the first pixel of the chunky data in an image. The processor sends this first word via a processor interface to the circuit. If no offset is needed, the barrel shifter does not shift the word which represents the first pixel. The pixel is therefore separated into four bytes and each byte is stored by color plane in a corresponding one of the memory cells.
The second pixel of the image has an address with an offset of +1 word (+4 bytes). The barrel shifter shifts each of the bytes within the word by one position, thereafter transferring each of the bytes into respective memory cells. The barrel shifter shifts each of the bytes in the third word by two positions, and each of the bytes in the fourth word by three positions. The four bytes of each word are thereby separated into each of the respective CMYK color planes and stored in corresponding memory cells by color planes as appropriate. The process then repeats for the next pixels in the image.
Thus, the first memory cell contains, e.g. a cyan byte from each word, the second memory cell contains a magenta byte from each word, the third memory cell contains a yellow byte from each word, and the fourth memory cell contains a black byte from each word. Thus, the chunky format data have been converted to planar data as stored in the respective memory cells. This planar data may then be output to a printer, e.g. for four pass printing. The invention therefore provides a technique that uses to advantage the more efficient chunky format while rendering an image, and the more efficient planar format during printing.
In an alternative embodiment of the invention, the invention is bidirectionally operative. Thus, bytes that have been sorted by color plane and that are therefore arranged in a planar format may be input to a barrel shifter to sort the bytes, and thereby produce image data in a chunky format.